package cn.iocoder.yudao.module.call.service.listenaction.listen.impl;

import cn.hutool.core.collection.ListUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.mybatis.core.enums.QueryCondition;
import cn.iocoder.yudao.module.call.api.form.dto.FieldRuleDTO;
import cn.iocoder.yudao.module.call.dal.dataobject.listenaction.ListenActionDO;
import cn.iocoder.yudao.module.call.enums.CallActionEnum;
import cn.iocoder.yudao.module.call.enums.CallListenEnum;
import cn.iocoder.yudao.module.call.enums.CallResultTypeEnum;
import cn.iocoder.yudao.module.call.enums.FormFieldTypeEnum;
import cn.iocoder.yudao.module.call.service.listenaction.listen.CallListen;
import cn.iocoder.yudao.module.call.service.listenaction.listen.dto.ListenActionParamDTO;
import cn.iocoder.yudao.module.call.service.listenaction.listen.dto.ListenInfoDTO;
import cn.iocoder.yudao.module.crm.api.level.CrmLevelConfigApi;
import cn.iocoder.yudao.module.crm.api.level.dto.CrmLevelConfigDTO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * 呼叫结果
 *
 */
@Service
public class CallResultListen implements CallListen {

    @Override
    public List<FieldRuleDTO> rules() {
        Map<Object, Object> callResultMap = CallResultTypeEnum.toMap();
        return ListUtil.of(
                new FieldRuleDTO().setField("callResult").setDesc("外呼结果").setType(FormFieldTypeEnum.SELECT.getType()).setOptions(callResultMap).setCondition(QueryCondition.IN)
        );
    }

    @Override
    public Boolean verify(ListenActionParamDTO paramDTO) {
        if(Objects.isNull(paramDTO.getCallRecordDO())){
            return false;
        }
        ListenActionDO listenActionDO = paramDTO.getListenActionDO();
        JSONObject listenParams = JSONUtil.parseObj(listenActionDO.getListenParams());
        JSONArray callResults = listenParams.getJSONArray("callResult");
        //判断呼叫结果是否在条件中
        return callResults.contains(paramDTO.getCallRecordDO().getResultType());
    }


}
